From: Matthias Clasen Date: Thu, 30 Aug 2018 17:05:55 +0000 (-0400) Subject: Add utility functions for portal paths X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~32^2~24 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=6829719d6db2136489c2377a7355c4f33ebbd738;p=gtk%2B3.0.git Add utility functions for portal paths The paths that we create for requests and sessions need some icky code to create. Keep it in one place. --- diff --git a/gtk/gtkprivate.c b/gtk/gtkprivate.c index 02448d7f92..6428347f04 100644 --- a/gtk/gtkprivate.c +++ b/gtk/gtkprivate.c @@ -291,3 +291,39 @@ gtk_should_use_portal (void) return use_portal[0] == '1'; } + +static char * +get_portal_path (GDBusConnection *connection, + const char *kind, + char **token) +{ + char *sender; + int i; + char *path; + + *token = g_strdup_printf ("gtk%d", g_random_int_range (0, G_MAXINT)); + sender = g_strdup (g_dbus_connection_get_unique_name (connection) + 1); + for (i = 0; sender[i]; i++) + if (sender[i] == '.') + sender[i] = '_'; + + path = g_strconcat ("/org/freedesktop/portal/desktop", "/", kind, "/", sender, "/", token, NULL); + + g_free (sender); + + return path; +} + +char * +gtk_get_portal_request_path (GDBusConnection *connection, + char **token) +{ + return get_portal_path (connection, "request", token); +} + +char * +gtk_get_portal_session_path (GDBusConnection *connection, + char **token) +{ + return get_portal_path (connection, "session", token); +} diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h index af130cd3f0..af7e58b5e9 100644 --- a/gtk/gtkprivate.h +++ b/gtk/gtkprivate.h @@ -96,6 +96,10 @@ gdouble _gtk_get_slowdown (); void _gtk_set_slowdown (gdouble slowdown_factor); gboolean gtk_should_use_portal (void); +char *gtk_get_portal_request_path (GDBusConnection *connection, + char **token); +char *gtk_get_portal_session_path (GDBusConnection *connection, + char **token); #ifdef G_OS_WIN32 void _gtk_load_dll_with_libgtk3_manifest (const char *dllname);